using UnityEngine;
using System.Collections;

public class kart : MonoBehaviour {
	
	/// <summary>
	/// The velocity. Velocidade do veiculo
	/// </summary>
	public float velocity = 0;
	/// <summary>
	/// Limit. Velocidade limite do veiculo
	/// </summary>
	public int limit;
	/// <summary>
	/// The acceleration. Força de aceleração do jogador
	/// </summary>
	public float acceleration;
	/// <summary>
	/// The brake. Força do freio
	/// </summary>
	public float brake;
	/// <summary>
	/// The drag. Força de atrito com o chão
	/// </summary>
	public float drag;
	/// <summary>
	/// The rotation. Rotação do veiculo
	/// </summary>
	public float rotation;
	/// <summary>
	/// The limit brake. Velocidade limite da ré do jogador
	/// </summary>
	public float limitBrake;
	/// <summary>
	/// The rotation2. Velocidade da rotação do freio da derrapagem
	/// </summary>
	public float rotation2;
	/// <summary>
	/// The hand brake. Força do freio de mão
	/// </summary>
	public float handBrake;
	
	void Update () 
	{
		//velocidade do carro
		transform.Translate(0,0,velocity*Time.deltaTime);
		rigidbody.velocity = new Vector3(0,0,0);
		
		//acelera o carro
		if((Input.GetKey("w") || Input.GetKey(KeyCode.UpArrow)) && (velocity < limit))
		{
			velocity += acceleration;
		}
		else
		{
			if(velocity > 0)
			{
				velocity -= drag;
			}
		}
		
		//freia o carro		
		if((Input.GetKey("s") || Input.GetKey(KeyCode.UpArrow)) && (velocity > limitBrake))
		{
			velocity -= brake;
		}
		
		//faz as curvas pra direita e pra esquerda
		if((Input.GetKey("a") || Input.GetKey(KeyCode.LeftArrow)) && (velocity > 0.5 || velocity < -0.5))
		{
			transform.Rotate(0,-rotation*Time.deltaTime,0);
		}
		
		if((Input.GetKey("d") || Input.GetKey(KeyCode.RightArrow)) && (velocity > 0.5 || velocity < -0.5))
		{
			transform.Rotate(0,rotation*Time.deltaTime,0);
		}
		
		//faz derrapar o carro
		if((Input.GetKey("a") && (velocity > 0.5 || velocity < -0.5)) && (Input.GetKey(KeyCode.LeftShift)))
		{
			transform.Rotate(0,-rotation2*Time.deltaTime,0);
		}
		
		if((Input.GetKey("d") && (velocity > 0.5 || velocity < -0.5)) && (Input.GetKey(KeyCode.LeftShift)))
		{
			transform.Rotate(0,rotation2*Time.deltaTime,0);
		}
		
		//freio de mão
		if(Input.GetKey(KeyCode.LeftShift) && velocity > 0)
		{
			velocity -= handBrake;
		}
	}
	
	void OnTriggerEnter(Collider other)
	{
		if(other.gameObject.tag == "Crates")
		{
			Destroy (other.gameObject);
		}
	}
}
